\documentclass{beamer}

\usetheme{Frankfurt}

\usepackage[czech]{babel}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}

% Pomucky pro spravnou sazbu URL
\def\urltilda{\kern -.15em\lower .7ex\hbox{\~{}}\kern .04em}
\def\urldot{\kern -.10em.\kern -.10em}
\def\urlhttp{http\kern -.10em\lower -.1ex\hbox{:}\kern -.12em\lower 0ex\hbox{/}\kern -.18em\lower 0ex\hbox{/}}

\title{Základy Qt4}
\author{Marek Hakala \& Michal Rost}
\institute[SH]{
  Akademie C++ 
  \and
  SH ČVUT
}
\date{1. lekce}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}

\begin{frame}{Osnova}
  \tableofcontents
\end{frame}

\section{Seznámení s Qt4}

\begin{frame}{Motivace}
  \begin{block}{Proč C++}
    \begin{itemize}
      \item Rychlost
      \item Nepotřebuje běhové prostředí
    \end{itemize}  
  \end{block}
  \begin{block}{Problémy C++}
    \begin{itemize}
      \item Nemá GUI
      \item Absence jediného předka
      \item Nemá reflexi
      \item Nepodporuje práci s vlákny
      \item Nepodporuje práci s databázemi
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}{Co to je Qt?}
  \begin{columns}
    \begin{column}[l]{3.5cm}
        \includegraphics[scale=0.75]{./resources/qt4_logo.pdf}
    \end{column}
    \begin{column}[r]{7.5cm}
    \begin{itemize}
      \item Multiplatformní framework rozšiřující jazyk C++
      \item Výrobci: Trolltech (1991-2008), Nokia (2008-současnost)
      \item Aktuální verze: 4.7.2 (březen 2011)
      \item Licence: LGPL (nekomerční použití)
    \end{itemize}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}{K čemu slouží Qt4?}
  \begin{columns}
    \begin{column}[l]{6cm}
      \includegraphics[scale=0.35]{./resources/qt4_modules.pdf}
    \end{column}
    \begin{column}[r]{5cm}
    \begin{itemize}
      \item Poskytuje \uv{reflexi}
      \item Umožňuje vytvářet GUI
      \item Podporuje práci databázemi
      \item Umožňuje práci s vlákny
      \item Nahrazuje a rozšiřuje standardní knihovnu
      \item A další\dots
    \end{itemize}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}{Objektový model Qt4 - MOS}
  \begin{columns}
    \begin{column}[l]{5cm}
      \begin{block}{Meta Object System (MOS)}
        \begin{itemize}
          \item Umožňuje reflexi
          \item Umožňuje zasílání zpráv mezi objekty
          \item Součástí modulu \emph{QtCore}
          \item Základním pilířem třída \emph{QObject}
          \item Zpracováván pomocí \emph{Meta Object Compiler} (MOC)
        \end{itemize}
      \end{block}
    \end{column}
    \begin{column}[r]{6cm}
      \begin{figure}[htbp]
        \includegraphics[scale=0.5]{./resources/qt4_mos.pdf}
        \caption{Základní třídy v QtCore}
      \end{figure}
    \end{column}
  \end{columns}
\end{frame}

\begin{frame}{Objektový model Qt4 - MOC}
  \begin{block}{Meta Object Compiler (MOC)}
    \begin{itemize}
      \item Preprocesor
      \item Generuje metadata pro třídy MOS
    \end{itemize}
  \end{block}
  \vspace{1cm}
  \begin{figure}[htbp]
    \includegraphics[scale=0.575]{./resources/qt4_moc.pdf}
    \caption{Činnost MOC}
  \end{figure}
\end{frame}

\begin{frame}{GUI v Qt4}
  \begin{columns}
    \begin{column}[l]{5cm}
    \begin{itemize}
      \item Poskytuje základní ovládací prvky (Widgety)
      \item Model View
      \item Podpora akcelerovaného vykreslování
      \item Možnost grafického návrhu v prostředí QtDesigner
    \end{itemize}
    \end{column}
    \begin{column}[r]{6.5cm}
      \begin{figure}[htbp]
        \includegraphics[scale=0.36]{./resources/qt4_gui.png}
        \caption{QtDesigner}
      \end{figure}
    \end{column}
  \end{columns}
\end{frame}

\section{Prostředí QtCreator}

\begin{frame}{Informace o Qt-Creatoru}
  \begin{columns}
    \begin{column}[l]{5cm}
      \begin{itemize}
        \item Odlehčené, přehledné uživatelské rozhraní
        \item Rozšiřovatelný pomocí pluginů
        \item Integrovaný Qt-Designer
        \item Nápověda s celou řadou příkladů 
      \end{itemize}
    \end{column}
    \begin{column}[r]{6.5cm}
      \begin{figure}[htbp]
        \includegraphics[scale=0.3]{./resources/qt4_creator.png}
        \caption{QtDesigner}
      \end{figure}
    \end{column}
  \end{columns}
\end{frame}


\section{Správa projektu v QtCreator}

\begin{frame}{QMake}
  \begin{block}{QMake}
    \begin{itemize}
      \item Výchozí projektový soubor QtCreatoru
      \item Umožňuje automaticky generovat \emph{makefile} soubory pro různé platformy
    \end{itemize}
  \end{block}
  \begin{block}{Soubory pro QMake}
    \begin{itemize}
      \item \emph{.pro} - projektový soubor, instrukce pro qmake
      \item \emph{.pri} - soubor s rozšiřujícím nastavením pro qmake
      \item \emph{.qrc} - soubor obsahující seznam prostředků používaných v rámci projektu
    \end{itemize}
  \end{block}
\end{frame}

\begin{frame}{QMake - princip}
  \begin{figure}[htbp]
    \includegraphics[scale=0.75]{./resources/qt4_qmake.pdf}
    \caption{QMake}
  \end{figure}
\end{frame}

\end{document}
